package com.bryant.demo05

import android.app.Application
import com.bryant.demo05.bean.UserData
import com.bryant.demo05.storage.FavoriteManager
import com.qweather.sdk.JWTGenerator
import com.qweather.sdk.QWeather

// 主要作用：全局初始化配置， 全局数据的局部存储

class WeatherApplication: Application()  {

    /**
     * 全局上下文获取：
     * - 通过 companion object 中的 instance 变量保存当前 Application 的实例
     * - 使得整个应用中可以方便地获取到上下文
     */
    companion object {
        private var instance: WeatherApplication? = null
        fun getInstance(): WeatherApplication {
            return instance!!
        }
        // 用户信息- 延迟初始化
        lateinit var user: UserData
    }
 
    override fun onCreate() {
        super.onCreate()
        instance = this

        // 1. 初始化天气SDK
        initWeatherSdk()

        // 2. 初始化收藏管理
        FavoriteManager.init(this)
    }
    /**
     * 初始化用户信息 - 外部调用， 将用户信息存储进来 - 全局可调用
     */
    fun initUserData(u: UserData) {
        user = u
    }

    fun initWeatherSdk() {
        // 初始化天气SDK
        // 通过SDK提供的JWTGenerator设置令牌生成器，其实现自TokenGenerator接口
        val jwt = JWTGenerator(
            WeatherConstants.WEATHER_PRIVATE_KEY,  // 私钥
            WeatherConstants.WEATHER_PROJECT_ID,  // 项目ID
            WeatherConstants.WEATHER_JWT_ID
        )
        QWeather.getInstance(this, WeatherConstants.WEATHER_HOST) // 初始化服务地址
            .setLogEnable(true)  // 启用调试日志（生产环境建议设置为 false）
            .setTokenGenerator(jwt) // 设置令牌生成器
    }
}